package jmine.tec.utils.reflection.fast;

import java.lang.reflect.Constructor;

/**
 * @author takeshi
 */
public interface FastConstructor {

    /**
     * Constroi
     * 
     * @param args Object[]
     * @return {@link Object}
     * @throws Exception e
     */
    Object build(Object... args) throws Exception;

    /**
     * @return int
     */
    int getArity();

    /**
     * @return array de {@link Class}
     */
    Class<?>[] getParamTypes();

    /**
     * @return {@link Class}
     */
    Class<?> getDeclaringClass();

    /**
     * @return {@link Constructor}
     */
    Constructor<?> getConstructor();

}
